pub fn convert_base(num_str: &str, to_base: u32) -> String {
    // 解析输入字符串，提取数字部分和原进制
    let parts: Vec<&str> = num_str.split('(').collect();
    if parts.len() != 2 || !parts[1].ends_with(')') {
        panic!("输入格式错误，正确格式为 'number(base)'");
    }

    let number = parts[0];
    let from_base: u32 = parts[1][..parts[1].len() - 1].parse().expect("无法解析输入进制");

    // 检查进制范围
    if !(2..=16).contains(&from_base) || !(2..=16).contains(&to_base) {
        panic!("仅支持2到16进制之间的转换");
    }

    // 将原进制的数字转换为10进制
    let decimal_value = u32::from_str_radix(number, from_base).expect("无效的数字或进制");

    // 将10进制数字转换为目标进制
    let result = to_base_string(decimal_value, to_base);

    // 返回结果，并加上目标进制标识
    result.to_lowercase()
}

// 辅助函数，将10进制数字转换为目标进制的字符串
fn to_base_string(mut value: u32, base: u32) -> String {
    let mut result = String::new();
    let digits = "0123456789ABCDEF";

    while value > 0 {
        let digit = (value % base) as usize;
        result.push(digits.chars().nth(digit).unwrap());
        value /= base;
    }

    if result.is_empty() {
        result.push('0'); // 特殊处理值为0的情况
    }

    result.chars().rev().collect()
}